问题
- 给定含有n个不同元素的数组L=<x1,x2,…,xn>,如果L中存在xi,使得x1<x2<…<xi-1xi+1>…>xn ,则称L是单峰序列,并称xi是L的峰顶。假设L是单峰的,设计一个算法找到L的峰顶,并从理论上分析算法的时间复杂度。
代码
- 直接遍历法
#include <stdio.h>
#include <stdlib.h>
int main()
{
int a[100]={-1},n=0,i=0,flag=0,m=0;
scanf("%d",&n);//输入数组 长度
for(;i<n;i++)
{
scanf("%d",&a[i]);//输入数组元素值
}
for(i=0;i<n;i++)
{
if(a[i+1]>a[i])//循环判断下一个数组元素值大于a[i]时
{ //将a[i+1]赋给m
m=a[i+1];
}
else
break;//当a[i+1]<a[i]时,跳出循环
}
printf("%d",m);//输出峰值
}
- 改写二分搜索算法
#include <s